home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / ms_dos / console / console.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-30  |  4KB  |  111 lines

  1. program console;
  2. (*
  3.   コンソールの速度を測るツール               Programed by T.Suzuki 1993.6.21
  4. *)
  5. uses Dos;
  6. var
  7.   h, m, s, hund ,time_1,time_2,time_3,time_4: Word;
  8.   d,seg_29,ofs_29:word;
  9.   start_time,end_time:longint;
  10.   i:integer;
  11.   n:byte;
  12.   fp:text;
  13.   p,pp:pointer;
  14.  
  15. procedure usage;
  16. begin
  17.   writeln('usage : console [-f]');
  18.   writeln;
  19.   writeln('    コンソールの速さを計測します。');
  20.   writeln;
  21.   writeln('    -f : Int29hをフックして画面表示を止めて計測する');
  22. end;
  23.  
  24. begin
  25.   if paramcount > 0 then if (pos('?',paramstr(1))>0) or
  26.     (pos('h',paramstr(1))>0) or (pos('H',paramstr(1))>0)
  27.     then begin usage;halt(0) end;
  28.  
  29.   getintvec($29,p);
  30.   pp:=@p;
  31.   ofs_29:=memw[dseg:ofs(pp)-4];          {Int29hのベクタを保存}
  32.   seg_29:=memw[dseg:ofs(pp)-2];
  33.   d:=mem[seg_29:ofs_29];
  34.   if (pos('f',paramstr(1))>0) or (pos('F',paramstr(1))>0)
  35.     then mem[seg_29:ofs_29]:=$cf;        {Int29hのコードの先頭にIRET}
  36.   GetTime(h,m,s,hund);
  37.   start_time:=h*3600 + m*60 + s;
  38.   for i:=1 to 2000 do writeln;
  39.   GetTime(h,m,s,hund);
  40.   end_time:=h*3600 + m*60 + s;
  41.   if start_time>end_time
  42.     then time_1:=24*3600-start_time+end_time
  43.     else time_1:=       -start_time+end_time;
  44.  
  45.   n:=1;
  46.   GetTime(h,m,s,hund);
  47.   start_time:=h*3600 + m*60 + s;
  48.   for i:=1 to 2000 do begin
  49.     writeln(copy('■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■'
  50.             ,1,n shl 1));
  51.     inc(n);if n=40 then n:=1;
  52.   end;
  53.   GetTime(h,m,s,hund);
  54.   end_time:=h*3600 + m*60 + s;
  55.   if start_time>end_time
  56.     then time_2:=24*3600-start_time+end_time
  57.     else time_2:=       -start_time+end_time;
  58.  
  59.   GetTime(h,m,s,hund);
  60.   start_time:=h*3600 + m*60 + s;
  61.   for i:=1 to 2000 do writeln('■■■■■■■■■■■■■■■■■■■■');
  62.   GetTime(h,m,s,hund);
  63.   end_time:=h*3600 + m*60 + s;
  64.   if start_time>end_time
  65.     then time_3:=24*3600-start_time+end_time
  66.     else time_3:=       -start_time+end_time;
  67.  
  68.   GetTime(h,m,s,hund);
  69.   start_time:=h*3600 + m*60 + s;
  70.   for i:=1 to 2000 do writeln('■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■');
  71.   GetTime(h,m,s,hund);
  72.   end_time:=h*3600 + m*60 + s;
  73.   if start_time>end_time
  74.     then time_4:=24*3600-start_time+end_time
  75.     else time_4:=       -start_time+end_time;
  76.   if (pos('f',paramstr(1))>0) or (pos('F',paramstr(1))>0)
  77.     then mem[seg_29:ofs_29]:=d;          {Int29hを元に戻す}
  78.  
  79.   writeln('2000行改行テスト                   : かかった時間・・・・',
  80.           time_1:7,'秒');
  81.   writeln('全角(1-39文字)×2000行改行テスト : かかった時間・・・・',
  82.           time_2:7,'秒');
  83.   writeln('                                   : スピード  ・・・・',
  84.           8000/time_2*80:7:0,'bps');
  85.   writeln('全角20文字×2000行表示テスト       : かかった時間・・・・',
  86.           time_3:7,'秒');
  87.   writeln('                                   : スピード  ・・・・',
  88.           8000/time_3*80:7:0,'bps');
  89.   writeln('全角39文字×2000行表示テスト       : かかった時間・・・・',
  90.           time_4:7,'秒');
  91.   writeln('                                   : スピード  ・・・・',
  92.           8000/time_4*80:7:0,'bps');
  93.   assign(fp,'console.res');
  94.   rewrite(fp);
  95.   writeln(fp,'2000行改行テスト                   : かかった時間・・・・',
  96.           time_1:7,'秒');
  97.   writeln(fp,'全角(1-39文字)×2000行改行テスト : かかった時間・・・・',
  98.           time_2:7,'秒');
  99.   writeln(fp,'                                   : スピード  ・・・・',
  100.           8000/time_2*80:7:0,'bps');
  101.   writeln(fp,'全角20文字×2000行表示テスト       : かかった時間・・・・',
  102.           time_3:7,'秒');
  103.   writeln(fp,'                                   : スピード  ・・・・',
  104.           8000/time_3*80:7:0,'bps');
  105.   writeln(fp,'全角39文字×2000行表示テスト       : かかった時間・・・・',
  106.           time_4:7,'秒');
  107.   writeln(fp,'                                   : スピード  ・・・・',
  108.           8000/time_4*80:7:0,'bps');
  109.   close(fp);
  110. end.
  111.